using System;
using System.Collections.Generic;

public class Demo1
{
    // 1. 三个整数由小到大输出
    public static void SortThreeNumbers()
    {
        Console.WriteLine("\n=== 三个整数排序 ===");
        Console.Write("请输入第一个整数: ");
        int x = int.Parse(Console.ReadLine());
        Console.Write("请输入第二个整数: ");
        int y = int.Parse(Console.ReadLine());
        Console.Write("请输入第三个整数: ");
        int z = int.Parse(Console.ReadLine());

        // 排序
        int temp;
        if (x > y) { temp = x; x = y; y = temp; }
        if (x > z) { temp = x; x = z; z = temp; }
        if (y > z) { temp = y; y = z; z = temp; }

        Console.WriteLine($"从小到大排序: {x}, {y}, {z}");
    }

    // 2. 打印1-100之间所有不是7的倍数和不包含7的数字，并求和
    public static void PrintAndSumNumbers()
    {
        Console.WriteLine("\n=== 特殊数字筛选与求和 ===");
        int sum = 0;
        int count = 0;
        
        for (int i = 1; i <= 100; i++)
        {
            // 检查是否是7的倍数或包含7
            if (i % 7 != 0 && !i.ToString().Contains("7"))
            {
                Console.Write(i + " ");
                sum += i;
                count++;
                
                // 每10个数换行
                if (count % 10 == 0)
                    Console.WriteLine();
            }
        }
        
        Console.WriteLine($"\n符合条件的数字总和为: {sum}");
    }

    // 3. 打印九九乘法表
    public static void PrintMultiplicationTable()
    {
        Console.WriteLine("\n=== 九九乘法表 ===");
        for (int i = 1; i <= 9; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                Console.Write($"{j}×{i}={i*j}\t");
            }
            Console.WriteLine();
        }
    }

    // 4. 求出1000以内的所有完数
    public static void FindPerfectNumbers()
    {
        Console.WriteLine("\n=== 1000以内的完数 ===");
        for (int i = 2; i <= 1000; i++)
        {
            int sum = 0;
            List<int> factors = new List<int>();
            
            // 查找所有真因子
            for (int j = 1; j < i; j++)
            {
                if (i % j == 0)
                {
                    sum += j;
                    factors.Add(j);
                }
            }
            
            // 判断是否为完数
            if (sum == i)
            {
                Console.Write($"{i}是完数，其真因子为: ");
                Console.WriteLine(string.Join(", ", factors));
            }
        }
    }

    // 5. 分析正整数的位数并逆序打印
    public static void AnalyzeNumber()
    {
        Console.WriteLine("\n=== 数字分析 ===");
        Console.Write("请输入一个正整数: ");
        int num = int.Parse(Console.ReadLine());
        int originalNum = num;
        int digitCount = 0;
        string reversed = "";

        // 计算位数并构建逆序字符串
        while (num > 0)
        {
            reversed += num % 10;
            num /= 10;
            digitCount++;
        }

        Console.WriteLine($"{originalNum}是{digitCount}位数");
        Console.WriteLine($"逆序打印: {reversed}");
    }

    // 6. 根据输入的行数打印菱形
    public static void PrintDiamond()
    {
        Console.WriteLine("\n=== 菱形打印 ===");
        Console.Write("请输入菱形的行数（奇数）: ");
        int rows = int.Parse(Console.ReadLine());

        // 确保输入为奇数
        if (rows % 2 == 0)
        {
            rows++;
            Console.WriteLine($"自动调整为奇数: {rows}");
        }

        int half = rows / 2;

        // 上半部分（包括中间行）
        for (int i = 0; i <= half; i++)
        {
            // 打印空格
            for (int j = 0; j < half - i; j++)
                Console.Write(" ");
            
            // 打印星号
            for (int k = 0; k < 2 * i + 1; k++)
                Console.Write("*");
            
            Console.WriteLine();
        }

        // 下半部分
        for (int i = half - 1; i >= 0; i--)
        {
            // 打印空格
            for (int j = 0; j < half - i; j++)
                Console.Write(" ");
            
            // 打印星号
            for (int k = 0; k < 2 * i + 1; k++)
                Console.Write("*");
            
            Console.WriteLine();
        }
    }

    // 主函数，用于测试所有功能
    public static void Main()
    {
        Console.WriteLine("===== 功能演示 =====");
        
        // 依次调用所有功能
        SortThreeNumbers();
        PrintAndSumNumbers();
        PrintMultiplicationTable();
        FindPerfectNumbers();
        AnalyzeNumber();
        PrintDiamond();
        
        Console.WriteLine("\n===== 演示结束 =====");
    }
}
